rabbitmq/rabbitmq

您所在的位置:网站首页 rabbitmq github rabbitmq/rabbitmq

rabbitmq/rabbitmq

#rabbitmq/rabbitmq| 来源: 网络整理| 查看: 265

RabbitMQ 3.12.0-beta.6

RabbitMQ 3.12.0-beta.6 is a preview of a new feature release.

Highlights

This release includes several new features and optimizations and graduates (makes mandatory) a number of feature flags.

The user-facing areas that have seen the biggest improvements in this release are

Significantly reduced MQTT and Web MQTT memory footprint per connectionReduced quorum queue memory footprint, improved throughput stability under loadClassic queue message store memory efficiency and footprint predictabilityOAuth 2, OIDC, IDP support

This release also features many internal API improvements in preparation to 4.0 with Khepri.

See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.

Obtaining Packages

RabbitMQ releases are distributed via GitHub, Cloudsmith, and PackageCloud.

Erlang/OTP Compatibility Notes

This release requires Erlang 25.0 or later. This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and modern Flame Graph profiling tooling for both of those major CPU architectures.

Provisioning Latest Erlang Releases explains what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.

Upgrading to 3.12Documentation guides on upgrades

See the Upgrading guide for documentation on upgrades and RabbitMQ change log for release notes of other releases.

Required Feature Flags

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading, similarly to how 3.11.0 required all feature flags introduced before 3.9.0.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Mixed version cluster compatibility

RabbitMQ 3.12.0 nodes can run alongside 3.11.x nodes. 3.12.x-specific features can only be made available when all nodes in the cluster upgrade to 3.12.0 or any other patch release in the new series.

While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below. Once all nodes are upgraded to 3.12.0, these irregularities will go away.

Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended periods of time (no more than a few hours).

Compatibility NotesMore Feature Flags Gratuate to Core Features ("Always Enabled")

RabbitMQ 3.12.0 will require all feature flags from the 3.11.x release series to be enabled before upgrading.

If the feature flags are not enabled, RabbitMQ 3.12 and later nodes will refuse to start.

Minimum Supported Erlang Version

Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes will fail to start on older Erlang releases.

Erlang 25 as our new baseline means much improved performance on ARM64 architectures, profiling with flame graphs across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.

Client Library Compatibility

Client libraries that were compatible with RabbitMQ 3.11.x will be compatible with 3.12.0.

Getting Help

Any questions about this release, upgrades or RabbitMQ in general are welcome on the RabbitMQ mailing list.

Changes Worth Mentioning

Release notes are kept under rabbitmq-server/release-notes.

Core ServerEnhancements

Quorum queues now sustain higher throughput with large backlogs. They also offer higher throughput on average, and in particular when Single Active Consumer is used.

GitHub issue: #7553

Reduced memory footprint, improved memory use predictability and throughput of classic queues. This particularly benefits classic queues with longer backlogs.

GitHub issues: #4522, #7516

Reduced peak memory footprint of quorum queues.

GitHub issue: #7175

Improved stream leader distribution efficiency. Mostly relevant to environments with lots of streams.

GitHub issue: #6440

All feature flags introduced before 3.11.0 are now required to be enabled. Make sure all feature flags are enabled before upgrading to 3.12.0.

GitHub issue: #7219

Plugin and core API: all schema data store operations are now available via the rabbit_db_* modules. Plugin maintainers should switch to them for an easier transition to a future 4.0 release.

GitHub issues: #6430, #6821

Plugin and core API: node data directory now should be accessed using rabbit:data_dir/0.

GitHub issue: #6462

Initial Erlang 26 compatibility

GitHub issues: #7443

There is now a way to pre-configure users and their permissions for newly created virtual hosts:

default_users.qa_user.vhost_pattern = qa.* default_users.qa_user.tags = policymaker,monitoring default_users.qa_user.password = fd237824441a78cd922410af4b83f0888186a8d7 default_users.qa_user.read = .* default_users.qa_user.write = .* default_users.qa_user.configure = .*

This is primarily useful in environments where RabbitMQ is provided as a service but customers (clients) have control over virtual hosts.

Contributed by @illotum (AWS).

GitHub issue: #7208.

Policies can now be defined to only apply to specific queue types.

For example, it is now possible to have two policies matching all queue names ('.*') but one applicable only to one queue type, and the other only to different queue type, without conflicts.

For example, this policy will only apply to quorum queues and not streams or classic queues:

rabbitmqctl set_policy at-least-once-dead-lettering ".*" '{"dead-letter-strategy": "at-least-once"}' --apply-to quorum_queues

It is now possible to limit the maximum number of virtual hosts that can be created in the cluster.

Contributed by @SimonUnge (AWS).

GitHub issue: #7777

Nodes with a lot of (non-mirrored) classic queues with v2 storage enabled by default (using classic_queue.default_version = 2) now boot faster.

GitHub issue: #7676

Quorum queues: The x-delivery-count header will no longer be added to messages the first time they are delivered (x-delivery-count=0) as it has a potential performance impact on consumer deliveries.

GitHub issue: #7732

Bug Fixes

This release includes all bug fixes shipped in the 3.11.x series.

It is now possible to use at-most-once dead lettering with streams (dead letter messages to a stream).

GitHub issue: #7846

Superstream could fail to elect a single active consumer (SAC) in certain consumer churn conditions.

GitHub issue: #7743

Classic mirrored queues that had a length limit defined on them handled the overflow of messages differently from the current elected leader, eventually causing exceptions and replica restarts.

GitHub issue: #7579

CLI ToolsEnhancements

rabbitmq-queues rebalance now supports streams in addition to classic and quorum queues.

GitHub issue: #6440

rabbitmq-streams restart_stream is a new command that can be used to kick off a new leader election for a stream. This is another option that can be used to rebalance stream leaders across cluster nodes.

GitHub issue: #6440

Classic queue metrics are now available via rabbitmq-diagnostics observer.

GitHub issue: #3314

rabbitmqctl set_permissions_globally is a new command that sets up user permissions in all existing virtual hosts.

GitHub issue: #1000

rabbitmq-diagnostics cluster_status now lists how many CPU cores are available to individual nodes, plus a total.

GitHub issue: #7135

MQTT PluginEnhancements

Significant (up to more than 90% with some workloads) reduction in memory footprint of MQTT connections, and a double digit % reduction in memory footprint of MQTT-over-WebSockets (Web MQTT) connections.

GitHub issues: #5895, #7091, #7234

The x-mqtt-dup header will no longer be present for consumer deliveries as it wasn't used correctly.

Management PluginEnhancements

Support for Identity Provider-initiated Login (IDP).

GitHub issues: #6015, #6201, #6247

Bug Fixes

Default queue type key used when add a virtual host via the HTTP API has changed from defaultqueuetype to default_queue_type. default_queue_type will be supported for a period of time for backwards compatibility.

GitHub issue: #7738

Consul Peer Discovery PluginBug Fixes

Consul peer discovery now correctly determines if the node uses long or short names.

Contributed by @SimonUnge (AWS).

GitHub issue: #4230

Dependency Changes ra was upgraded to 2.5.1Source Code Archives

To obtain source code of the entire distribution, please download the archive named rabbitmq-server-3.12.0.tar.xz instead of the source tarball produced by GitHub.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3